home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
C64
/
T-TPUG Old Monthly Disks
/
(c)tu.d64
/
ponzo tutor-7.c
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2007-02-04
|
15KB
|
383 lines
0 REM" PONZO*82*WATERLOO
1 [143]"
5 POKE53281,15:POKE53280,12:PRINT"[144]"
10 PRINT"[147] C64 TUTOR-7
15 [153]"ORTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTAN^"
20 [153]"(null) ...AND MORE MACHINE LANGUAGE... WAIT (null)":MS$[178]" WELCOME! "
25 [153]"/TANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANEXPSTOP"
35 [141]60000:[141]63100:[141]63000
40 [141]20000
45 [153]"LOAD":[153]SD$"RECALL THAT THE 6510WAIT HAS A"
50 [153]"NUMBER OF INTERNAL REGISTERS...":[141]63000:[153]A$X$Y$
60 [141]39100:[153]"SOME COMMANDS AFFECT THE NUMBERS"
70 [153]"CONTAINED IN THESE REGISTERS..":[141]63000:[153]SD$""
90 [153]"ADCWAIT ANDWAIT ASLWAIT CMPWAIT CPXWAIT CPYWAIT DECWAIT DEXWAIT DEY"
100 [153]"EORWAIT INCWAIT INXWAIT INYWAIT LDAWAIT LDXWAIT LDYWAIT LSRWAIT ORA"
110 [153]"PLAWAIT PLPWAIT ROLWAIT RORWAIT RTIWAIT SBCWAIT TAXWAIT TSXWAIT TXA"
120 [153]"..AND TYAWAIT!!":MS$[178]"WHERE'SBITWAIT" :[141]63100:[141]63000
130 [141]39100:[153]"THE 6510WAIT KEEPS TRACK OF WHETHER"
140 [153]"ONE OF THESE OPERATIONS PRODUCES A ZWAITERO"
150 [153]"OR NWAITEGATIVE RESULT..AND, FOR ADCWAIT"
160 [153]"AND SBCWAIT (ADD & SUBTRACT), WHETHER"
170 [153]"THE OPERATION PRODUCES AN OVERFLOWWAIT.":[141]63000
180 [141]39100:[153]"THE PWAITROCESSOR STATUS REGISTER"
190 [153]"HAS 8 BITS. THREE BITS ARE DEVOTED TO"
200 [153]"NWAITEGATIVE,OVWAITERFLOW AND ZWAITERO.":[141]63000:[153]P$
210 [151]P(0),142:[151]P(1),150:[151]P(6),154:[141]63000
215 [151]P(0),32:[151]P(1),32:[151]P(6),32
220 [141]39100:[153]"IF AN OPERATION PRODUCES A NWAITEGATIVE"
230 [153]"RESULT,N=1WAIT":[151]P(0),177:[141]63000
240 [141]39100:[153]"IF IT'S NOT NEGATIVE THEN N=0WAIT"
250 [153]"(MEANING IT'S POSITIVE!)":[151]P(0),176:[141]63000
260 [153]"LOADA NEGATIVE NUMBER HAS A '1'"
270 [153]"IN THE MSB POSITION."
280 [153]"IF ONE OF THE OPERATIONS WHICH AFFECT"
290 [153]"THE A,X OR Y-REGISTERS IS PERFORMED,"
300 [153]"AND THE MSB OF THE RESULT IS '1', THEN"
310 [153]"N=1WAIT. IT'S THAT SIMPLE!":[141]63000
320 MS$[178]" N=MSBWAIT ":[141]63100:[141]63000
330 [153]"LOADBMI $1234WAIT WILL TEST THE NWAIT-BIT AND,"
340 [153]"IF IT'S '1', WILL BRANCH TO $1234."
350 [153]"(SINCE THE 'RESULT' IS MIWAITNUS!)"
360 [153]"BPL $1234WAIT WILL BWAITRANCH TO $1234"
370 [153]"IF THE 'RESULT' IS PLWAITUS (N=0)."
380 [153]"IF WE LDA #$D3WAIT, THEN N=1"
390 [153]"BECAUSE $D0=11010011 IN BINARY AND MSB=1"
400 [153]"SOCMDCMDFREFREON..BPL $1234WAIT WILL NOTCMDCMDCMDFREFREFREON TAKE US"
410 [153]"TO $1234.":MS$[178]" CAREFUL!!":[141]63000:[141]63100
420 [153]"LOAD THE V-BITWAIT"
425 [153]"SINCE THE MSB CARRIES THE 'SIGN' OF A"
430 [153]"NUMBER (IN 'SIGNED ARITHMETIC')"
440 [153]"THEN AN ADCWAIT OR SBCWAIT WHICH CAUSES"
450 [153]"THE NEXT-TO-MSB TO 'OVERFLOW' INTO THE"
460 [153]"SIGN-BIT WILL CAUSE V=1WAIT."
470 [153]"IF 'SIGNED ARITHMETIC' IS NOT BEING"
480 [153]"PERFORMED THEN WE CAN IGNORE THE V-BIT."
490 [153]"ALTHOUGH ADCWAIT AND SBCWAIT MAY SET V=1"
500 [153]"WE CAN FORCE V=0 WITH THE COMMAND:"
510 [153]"CLVWAIT=CLWAITEAR THE VWAIT-BIT.":[141]63000:[141]10000
520 [153]"LOADIT'S OFTEN NECESSARY TO JWAITUMPWAIT FROM"
530 [153]"ONE PLACE TO ANOTHER IN A PROGRAM."
540 [153]"WE CAN USE: JMP $1234WAIT."
550 [153]"OF COURSE WECLOSEHAD BETTER HAVE SOME"
560 [153]"INSTRUCTIONS AT $1234!!"
570 [153]"IF OUR PROGRAM IS AT $1000-$2000"
590 [153]"AND IT HAS A JMP $1234WAIT,THAT'S OK."
600 [153]"IF WECLOSEPHYSICALLY MOVE THIS PROGRAM TO,"
610 [153]"SAY, $3000 TO $4000 (PERHAPS TO MAKE"
620 [153]"ROOM FOR SOME BASICWAIT AT $0801 TO $2000)"
630 [153]"THEN THE RELOCATED PROGRAM SHOULD NOT"
640 [153]"HAVE JMP $1234WAIT IN IT!!":[141]63000
650 [153]"LOADHERE'S ANOTHER USE OF THE V-BIT."
660 [153]"SUPPOSE WE HAVE JMP $1234WAIT LOCATED"
670 [153]"IN OUR PROGRAM AT $1200-$1202."
680 [153]"$1200 $1201 $1202 $1203"
690 [153]" 4CWAIT 34WAIT 12WAIT ***"
700 [153]" ^JMP ^HI ^LO ^NEXT"
710 [153]" ^INST ^BYTE ^BYTE ^INST"
720 [153]"WE WOULD NORMALLY CONTINUE TO THE NEXT"
730 [153]"INSTRUCTION AT $1203WAIT BUT,BECAUSE OF"
740 [153]"THE JMPWAIT, WE ACTUALLY MOVE AHEAD TO $1234"
750 [153]"WHICH IS $31WAIT MEMORY LOC'NS FARTHER ON!":[141]63000
760 [153]"LOADWE CAN PERFORM A RELATIVE JUMPWAIT, BY"
770 [153]"$31WAIT MEMORY LOCATIONS, BY WRITING:"
780 [153]"CLV WAIT=CLEAR V-BIT (SET V=0)."
790 [153]"BVC #$31WAIT=BRANCH AHEAD $31 LOC'NS IF V=0"
800 [153]"THIS WILL TAKE US TO $1234 AND THE"
810 [153]"PROGRAM IS 'RELOCATABLE'!":[141]63000:[153]SD$
820 [153]"$1200 $1201 $1202"
830 [153]" B8WAIT 50WAIT 31"
840 [153]" ^CLV ^BVC ^# LOC'NS"
850 [153]"IF WE DON'T USE JMPWAITS, BUT 'RELATIVE"
860 [153]"BRANCHES' INSTEAD, OUR PROGRAM WILL"
870 [153]"RUN ANYWHERE IN MEMORY!":[141]63000
875 [153]"LOADCONFUSING??WAIT":[153]"WHEN DO WECLOSESAY BVC $1234WAIT"
876 [153]"AND WHEN BVC #$31WAIT?*!"
877 [153]"ACTUALLY, ALTHOUGH AN 'ASSEMBLER' SUCH"
878 [153]"AS MICROMONWAIT WILL ALLOW US TO SAY"
879 [153]"BVC $1234WAIT, THE MACHINE LANGUAGE CODE"
880 [153]"GENERATED WILL READ BVC #$31WAIT!!"
881 [153]"THAT IS, THE INSTRUCTION WILL APPEAR"
882 [153]"IN MEMORY AS 50WAIT 31WAIT..MEANING BRANCH"
883 [153]"AHEAD $31 LOC'NS IF V=0.":[141]63000
885 [153]"LOADALL BWAITRANCH INSTRUCTIONS ARE 'RELATIVE':"
890 [153]"BCSWAIT=BRANCH IF CARRY IS SET(C=1)"
900 [153]"BCCWAIT=BRANCH IF CARRY IS CLEAR(C=0)"
910 [153]"BEQWAIT=BRANCH IF Z-BIT IS SET(Z=1)"
920 [153]"BNEWAIT=BRANCH IF Z-BIT IS CLEAR(Z=0)"
930 [153]"BMIWAIT=BRANCH IF N-BIT IS SET(N=1)"
940 [153]"BPLWAIT=BRANCH IF N-BIT IS CLEAR(N=0)"
950 [153]"BVSWAIT=BRANCH IF V-BIT IS SET(V=1)"
960 [153]"BVCWAIT=BRANCH IF V-BIT IS CLEAR(V=0)":[141]63000
965 MS$[178]"RELATIVES?":[141]63100
970 [153]"LOAD":[153]P$:[153]SD$"SOME OF THE BITS OF THE PWAITROCESSOR"
980 [153]"STATUS REGISTER CAN BE SET(=1), AND"
990 [153]"SOME CAN BE CLEARED(=0).":[141]63000:[141]39100
1000 [153]"CLVWAIT=CLEARS OVWAITERFLOW":[151]P(1),176:[141]63000:[141]39100
1005 [151]P(1),32
1010 [153]"CLCWAIT=CLEARS CWAITARRY":[151]P(7),176:[141]63000:[141]39100
1015 [151]P(7),32
1020 [153]"CLDWAIT=CLEARS DWAITECIMAL MODE FLAG":[151]P(4),176:[141]63000
1025 MS$[178]"WHAT FLAG?":[141]63100:[141]63000:[141]39100:[151]P(4),132
1030 [153]"CLIWAIT=CLEARS IWAITNTERRUPT FLAG":[151]P(5),176:[141]63000
1035 MS$[178]"WHAT FLAG!WAIT":[141]63100:[151]P(5),137:[141]63000:[141]39100
1040 [153]"LOAD"SD$"ALTOGETHER NOW..":[153]P$
1050 [151]P(0),14:[151]P(1),22:[151]P(4),4:[151]P(5),9:[151]P(6),26:[151]P(7),3
1055 [141]63000
1060 [141]39100:[153]"NWAIT=NWAITEGATIVE FLAG BIT.":[151]P(0),[194](P(0))[170]128
1061 [141]63000
1070 [153]SD$"VWAIT=OVWAITERFLOW FLAG BIT.":[151]P(1),[194](P(1))[170]128:[141]63000
1080 [153]SD$"DWAIT=DWAITECIMAL MODE FLAG BIT.":[151]P(4),[194](P(4))[170]128
1081 [141]63000
1090 [153]SD$"IWAIT=IWAITNTERRUPT FLAG BIT.":[151]P(5),[194](P(5))[170]128
1091 [141]63000
1100 [153]SD$"ZWAIT=ZWAITERO FLAG BIT.":[151]P(6),[194](P(6))[170]128:[141]63000
1110 [153]SD$"CWAIT=CWAITARRY FLAG BIT.":[151]P(7),[194](P(7))[170]128
1115 [141]63000
1120 [151]P(2),214:MS$[178]"NOT USED!!WAIT":[141]63100
1125 [161]Z$:[139]Z$[178]""[167][151]P(2),32:[137]1120
1130 [151]P(3),130:[141]39100:[153]"WHEN THE 6510 GETS A BREAKWAIT COMMAND"
1140 [153]"(WHICH IS 00WAIT) "
1150 [153]"THE BWAITREAK BIT IS SET(B=1)":[141]63000:[151]P(3),130
1160 MS$[178]"COMMAND=00":[141]63100:[141]63000
1170 [153]"LOADJUST IN CASE YOU'RE WONDERING.."
1180 [153]"THE 6510WAIT HAS A DECIMALWAIT MODE WHEREBY"
1190 [153]"ARITHMETIC OPERATIONS ARE PERFORMED"
1200 [153]"ASSUMING ALL NUMBERS ARE NOTWAIT IN DECIMAL"
1210 [153]"BUT RATHER IN BWAITINARY CWAITODED DWAITECIMAL!"
1220 [153]"IF WE WANT TO OPERATE IN 'DECIMAL"
1230 [153]"MODE' WE MUST SET THE DWAIT-FLAG TO '1':"
1240 [153]"SED"
1250 [153]"TO GET OUT OF THIS MODE WE CLEAR THE"
1260 [153]"DECIMAL MODE FLAG TO '0':"
1270 [153]"CLD":[141]63000
1280 [153]"LOADFURTHER..THE 6510WAIT CAN BE INTERRUPTED"
1290 [153]"BY LOWERING THE VOLTAGE ON ONE OF IT'S"
1300 [153]"PINS..THE IRQWAIT OR ICMDFREONNTERRUPT RCMDFREONEQCMDFREONUEST PIN."
1310 [153]"(EXTERNAL DEVICES DO THIS TO THE 6510"
1320 [153]"ALL THE TIME!)"
1330 [153]"WHEN THE 6510 GETS AN IRQWAIT IT STOPS"
1340 [153]"WHAT IT'S DOIN'...SERVICES THE"
1350 [153]"INTERRUPTING DEVICE..THEN RETURNS"
1360 [153]"FROM THE INTERRUPT TO CONTINUE.":[141]63000
1370 [153]"LOADFOR EXAMPLE, EVERY JIFFY(=1/60 SECOND)"
1380 [153]"THE 6510 INTERRUPTS WHATEVER IT'S DOIN'"
1390 [153]"AND UPDATES THE INTERNAL CLOCK,CHECKS"
1400 [153]"THE KEYBOARD TO SEE IF YOU'RE PRESSING"
1410 [153]"THE STOPWAIT KEY, ETC."
1420 [153]"WHETHER OR NOT THE 6510 WILL LET ITSELF"
1430 [153]"BE INTERRUPTED DEPENDS UPON A MAGIC"
1440 [153]"BIT IN THE PWAIT-REGISTER."
1450 [153]"GUESS WHICH ONE?!!":[141]63000
1460 [153]"LOAD"P$:[151]P(0),14:[151]P(1),22:[151]P(3),2:[151]P(4),4:[151]P(5),137
1470 [151]P(6),26:[151]P(7),3
1480 [153]SD$"YOU BET!"
1490 [153]"IF THE IWAIT BIT IS CLEAR(=0) THE 6510"
1500 [153]"WILL LETWAIT ITSELF BE INTERRUPTED."
1510 [153]"IF I=1 HOWEVER IT WILL NOTWAIT!"
1520 [153]"SEIWAIT WILL SET I=1"
1530 [153]"CLIWAIT WILL CLEAR I=0"
1540 [141]63000
1550 [153]"LOADSO, IF YOU WANT THE 6510 TO IGNORE"
1560 [153]"INTERRUPTS (INCLUDING THE POOR GUY"
1570 [153]"BANGING ON THE STOPWAIT KEY!)"
1580 [153]"START YOUR PROGRAM WITH SEIWAIT AND,"
1590 [153]"...TO AVOID ANY VIOLENCE..."
1600 [153]"(EVENTUALLY) END IT WITH CLIWAIT.":[141]63000
1610 [153]"LOADAND THEN THERE ARE SUBROUTINESWAIT:"
1620 [153]"IF WE WRITE LO-O-ONG MACHINE LANGUAGE"
1630 [153]"PROGRAMS (USING AN ASSEMBLER SO WE"
1640 [153]"DON'T HAVE TO ENTER THE HEX BYTES"
1650 [153]"INTO MEMORY BUT CAN USE ASSEMBLY"
1660 [153]"LANGUAGE) THEN IT'S CONVENIENT TO"
1670 [153]"BREAK UP OUR LONG PROGRAM INTO WEE"
1680 [153]"PIECES=SUBROUTINES."
1690 [153]"(null)IN BASIC WE'D SAY: GOSUB 1000WAIT"
1700 [153]"(null)IN ASSEMBLER WE'D SAY: JSR $1234"
1710 [153]"(null)WHICH TRANSLATES TO: 20WAIT 34WAIT 12WAIT"
1720 [153]" IN MACHINE LANGUAGE!":[141]63000
1730 [153]"LOADBASIC SUBROUTINES MUST END IN RETURNWAIT"
1740 [153]"SO THE PROGRAM CAN GO BACK FROM WHERE"
1750 [153]"IT WAS 'CALLED'."
1760 [153]"IN ASSEMBLER WE END SUBROUTINES WITH"
1770 [153]"RTSWAIT=RWAITETWAITURN FROM SWAITUBROUTINE:"
1780 [153]"$1000 LDA #$00 "
1781 [153]"$1002 JSR $1234WAITTAN^"
1782 [153]"$1005 ----- WAIT (null)"
1783 [153]" ----- WAIT (null)"
1784 [153]" ----- (null)"
1785 [153]" ----- ."
1786 [153]"$1234 ***** WAIT_EXPSUBROUTINE"
1787 [153]" ***** "
1788 [153]" RTS "
1789 MS$[178]"THERE..AND":[141]63100:[141]63002
1790 [153]""
1791 [153]"$1002 JSR $1234WAIT "
1792 [153]"$1005 ----- WAIT_^"
1793 [153]" ----- WAIT (null)"
1794 [153]" ----- (null)"
1795 [153]" ----- ."
1796 [153]"$1234 ***** WAIT (null) "
1797 [153]" ***** WAIT (null)"
1798 [153]" RTS WAITTANEXP":MS$[178]"BACK AGAIN":[141]63100:[141]63000
1800 [153]"LOADJUST ONE MORE COMMAND...":[141]63000
1805 [153]"LOAD":[153]A$P$
1810 [153]SD$"LDA #$D3WAIT":N$[178]"11010011":[141]63010:[141]40110
1820 N$[178]"10000000":[141]40120:[141]63000:PP[178]300
1830 [153]SD$"RORWAIT=ROTATE RIGHT":N$[178]"01101001":[141]63010
1835 [151]P(7),32:[153]""[163]37)"0"
1836 [153]SD$"CARRY BIT REMOVED FOR SAFE KEEPING":[141]63000
1840 [153]""[166]17)"(null)CMD/TANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANEXPONCMD^";:[151]P(7),49
1845 [141]40096:[153]""CL$:[153]CL$
1846 [153]SD$"AWAIT-REGISTER ROTATED ..INTO CARRY!":[141]63000
1850 [153]"^CMD/TANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTAN":[151]A(0),48
1860 [153]SD$"CARRY BIT STUFFED INTO MSB OF AWAIT.":[141]63000
1870 [153]"LOAD..AND THERE'S ROLWAIT WHICH ALSO"
1880 [153]"INVOLVES THE CWAITARRY BIT..":[141]63000
1890 [153]"LOADSUPPOSE WE WANT TO JSR $1234"
1900 [153]"BUT ALSO WANT TO RETAIN ALL THE NUMBERS"
1910 [153]"IN THE 6510 REGISTERS, AFTER RETURNING"
1920 [153]"FROM THE SUBROUTINE."
1930 [153]"WE CAN PUSHWAIT ALL THE REGISTERS ONTO"
1940 [153]"THE STACKWAIT WHICH CONSISTS OF SEVERAL"
1950 [153]"MEMORY LOCATIONS IN RAMWAIT..$100-$1FF."
1960 [153]"PHAWAIT=PUSH THE A-REGISTER ONTO THE STACK"
1970 [153]"PHPWAIT=PUSH THE P-REGISTER ONTO THE STACK":[141]63000
1980 [153]"LOADTO PUSH THE X AND Y REGISTERS WE:"
1990 [153]"TXAWAIT PHAWAIT AND TYAWAIT PHAWAIT."
2000 [153]"SO..WE:"
2010 [153]"PHAWAIT PHPWAIT TXAWAIT PHAWAIT TYAWAIT PHA"
2020 [153]"THEN..JSR $1234."
2030 [153]"LATER, AFTER RTSWAIT, WE WANT ALL"
2040 [153]"THOSE NUMBERS BACK IN THE REGISTERS."
2050 [153]"SO WE PULLWAIT THEM FROM THE STACK"
2060 [153]"IN THE REVERSE ORDERWAIT!!!"
2070 [153]"PLAWAIT TAYWAIT PLAWAIT TAXWAIT PLPWAIT PLA":[141]63000
2080 [153]"LOADTHE STACK IS A NICE PLACE TO STORE"
2090 [153]"BYTES TEMPORARILY. IF WE WANT TO"
2100 [153]"EXCHANGE THE CONTENTS OF MEMORY LOC'NS"
2110 [153]"$2000 AND $3000 THEN WE CAN:"
2120 [153]"LDA $2000WAIT PHAWAIT LDA $3000WAIT STA $2000"
2130 [153]"PLAWAIT STA $3000":MS$[178]" SLICK!WAIT":[141]63000:[141]63100
2140 [153]"LOADYOUWAIT DETERMINE WHAT THE FOLLOWING"
2150 [153]"SUBROUTINE DOES..":[141]63000
3000 [153]"LOAD., 6000 A2 00 LDX #$00
3001 PRINT"., 6002 BD 00 04 LDA $0400,X
3002 [153]"., 6005 48 PHA
3003 PRINT"., 6006 BD 40 05 LDA $0540,X
3004 [153]"., 6009 9D 00 04 STA $0400,X
3005 PRINT"., 600C 68 PLA
3006 [153]"., 600D 9D 40 05 STA $0540,X
3007 PRINT"., 6010 BD A0 04 LDA $04A0,X
3008 [153]"., 6013 48 PHA
3009 PRINT"., 6014 BD E0 05 LDA $05E0,X
3010 [153]"., 6017 9D A0 04 STA $04A0,X
3011 PRINT"., 601A 68 PLA
3012 [153]"., 601B 9D E0 05 STA $05E0,X
3013 PRINT"., 601E E8 INX
3014 [153]"., 601F D0 E1 CPX #$A0
3015 PRINT"., 6021 D0 DF BNE $6002
3016 [153]"., 6023 60 RTS
3020 M=6*4096:FORI=MTOM+35:READK:POKEI,K:NEXT
3030 DATA162,0,189,0,4,72,189,64,5,157,0,4,104,157,64,5,189,160,4
3040 DATA72,189,224,5,157,160,4,104,157,224,5,232,224,160,208,223,96
3050 U$="":V$="":FORI=1TOWD-1:U$=U$+"*":V$=V$+" ":NEXT
3055 PRINTBT$"[145][145][145][145]YOU CAN TRY IT!"
3100 GOSUB63000:PRINT"[147]";:FORI=1TO4:PRINTU$:NEXT:FORI=1TO4:PRINTV$:NEXT
3110 PRINT"END OF TUTOR7[146]"
3115 MS$="AU REVOIR![146]"
3120 FORI=1TO10:SYS6*4096:FORT=1TO500:NEXT:NEXT:GOSUB63100
3125 FORI=1TO10:GETZ$:NEXT:PRINTBT$"[145][145][145][145][145][145]SYS6*4096[145][145][145]":END
10000 PRINT"[147]":PRINTP$:PRINTSD$"[209]THE Z-BIT IS SET TO '1'"
10010 PRINT"IF EVERY BIT OF A 'RESULT' IS 00[146].":GOSUB63000
10020 POKEP(6),177:GOSUB63000:PRINTSD$"";
10030 PRINT"[209]Z=0 IF A 'RESULT' IS NOT[157][157][157][184][184][184][145] ZERO.":POKEP(6),176
10040 GOSUB63000
10050 PRINT"[147]":PRINTP$:PRINTSD$"AND THE CARRY[146] BIT.."
10060 PRINT"WHERE'S THE CARRY BIT!!":FORT=1TO10:PRINTCHR$(14);
10070 FORT1=1TO50:NEXT:PRINTCHR$(142);:FORT1=1TO50:NEXT:NEXT
10080 GOSUB63000:POKEP(7),131:GOSUB63000:RETURN
20000 PRINT"[147]HERE'S THE SET OF 6510[146] COMMANDS:"
20010 PRINT"ADC[146] AND[146] ASL[146] BCC[146] BCS[146] BEQ[146] BIT[146] BMI[146] BNE"
20020 PRINT"BPL[146] BRK[146] BVC[146] BVS[146] CLC[146] CLD[146] CLI[146] CLV[146] CMP"
20030 PRINT"CPX[146] CPY[146] DEC[146] DEX[146] DEY[146] EOR[146] INC[146] INX[146] INY"
20040 PRINT"JMP[146] JSR[146] LDA[146] LDX[146] LDY[146] LSR[146] NOP[146] ORA[146] PHA"
20050 PRINT"PHP[146] PLA[146] PLP[146] ROL[146] ROR[146] RTI[146] SBC[146] SEC[146] SED"
20060 PRINT"TXA[146] STA[146] STX[146] STY[146] TAX[146] TAY[146] TYA[146] TSX[146] TXA"
20070 PRINT"..AND TXS[146]!":GOSUB63000
20080 MS$="IMPRESSIVE":GOSUB63100
20090 GOSUB63000:RETURN
39000 PRINT"";:FORI=1TO17:PRINTCL$:NEXT:PRINT"";:RETURN
39100 PRINTSD$;:FORI=1TO15:PRINTCL$:NEXT:PRINTSD$;:RETURN
40096 POKEA(7),32:FORTT=1TOPP:NEXT:FORI=7TO1STEP-1:POKEA(I-1),32
40097 POKEA(I),VAL(MID$(N$,I,1))+48:FORTT=1TOPP:NEXT:NEXT:RETURN
40098 POKEA(0),32:FORTT=1TOPP:NEXT:FORI=0TO6:POKEA(I+1),32
40099 POKEA(I),VAL(MID$(N$,I+1,1))+48:FORTT=1TOPP:NEXT:NEXT:POKEA(7),48:RETURN
40110 FORI=0TO7:POKEA(I),160:FORTT=1TOPP:NEXT
40111 POKEA(I),VAL(MID$(N$,I+1,1))+48:NEXT:RETURN
40120 FORI=0TO7:POKEP(I),160:FORTT=1TOPP:NEXT
40121 POKEP(I),VAL(MID$(N$,I+1,1))+48:NEXT:RETURN
40130 FORI=0TO7:POKEX(I),160:FORTT=1TOPP:NEXT
40131 POKEX(I),VAL(MID$(N$,I+1,1))+48:NEXT:RETURN
40140 FORI=0TO7:POKEY(I),160:FORTT=1TOPP:NEXT
40141 POKEY(I),VAL(MID$(N$,I+1,1))+48:NEXT:RETURN
40160 FORI=0TO7:POKEM(I),160:FORTT=1TOPP:NEXT
40161 POKEM(I),VAL(MID$(N$,I+1,1))+48:NEXT:RETURN
41120 FORI=0TO7:POKEP(I),160:FORTT=1TOPP:NEXT
41121 POKEP(I),PEEK(A(I)):NEXT:RETURN
41130 FORI=0TO7:POKEX(I),160:FORTT=1TOPP:NEXT
41131 POKEX(I),PEEK(A(I)):NEXT:RETURN
41140 FORI=0TO7:POKEY(I),160:FORTT=1TOPP:NEXT
41141 POKEY(I),PEEK(A(I)):NEXT:RETURN
41160 FORI=0TO7:POKEM(I),160:FORTT=1TOPP:NEXT
41161 POKEM(I),PEEK(A(I)):NEXT:RETURN
41340 FORI=0TO7:POKEA(I),160:FORTT=1TOPP:NEXT
41341 POKEA(I),PEEK(X(I)):NEXT:RETURN
41360 FORI=0TO7:POKEM(I),160:FORTT=1TOPP:NEXT
41361 POKEM(I),PEEK(X(I)):NEXT:RETURN
41410 FORI=0TO7:POKEA(I),160:FORTT=1TOPP:NEXT
41411 POKEA(I),PEEK(Y(I)):NEXT:RETURN
41460 FORI=0TO7:POKEM(I),160:FORTT=1TOPP:NEXT
41461 POKEM(I),PEEK(Y(I)):NEXT:RETURN
60000 R$="[176][192][178][192][178][192][178][192][178][192][178][192][178][192][178][192][174][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][221][160][221][160][221][160][221][160][221][160][221][160][221][160][221][160][221]"
60001 R$=R$+"[157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][173][192][177][192][177][192][177][192][177][192][177][192][177][192][177][192][189]"
60002 A$=" A[146][145]"+R$:P$="P[146][145]"+R$
60003 X$=" X[146][145]"+R$:Y$="Y[146][145]"+R$
60004 M$="M[146][145]"+R$
60005 CR$="[176][192][174][157][157][157][221][221][157][157][157][173][192][189]"
60006 CC$=" A[146][221][157][157][157] [157] [157] [157] [157] [157][157][157] [157][157][157] [145] "
60007 WD=40:CRT=1024:PRINTCHR$(142)
60008 FORI=0TO7:A(I)=CRT+WD+3+2*I:P(I)=A(I)+20:X(I)=A(I)+3*WD:Y(I)=X(I)+20
60009 M(I)=Y(I)+3*WD:NEXT:C=CRT+7*WD+1
60010 SD$="":CL$="":FORI=1TOWD-1:CL$=CL$+" ":NEXT
60011 BT$="":FORI=1TO24:BT$=BT$+"":NEXT
60012 C$=CR$+"[176][192][179][157][157][157][221][157][221][157][221][157][221][157][171]_CARRY BIT"
60019 ML$=""
60020 BT$="":FORI=1TO24:BT$=BT$+"":NEXT
60021 PT$="[176][192][192][192][192][192][192][192][192][192][192][174][157][157][157][157][157][157][157][157][157][157][157][157][221][221][157][157][157][157][157][157][157][157][157][157][157][157][173][178][192][192][192][192][192][192][192][192][178][189]"
60022 PT$=PT$+"[157][157][157][157][157][157][157][157][157][157][157][157][157][206][163][163][163][163][163][163][163][163][163][163][163][163][205][157][157][157][157][157][157][157][157][157][157][157][157][157][157][165]============[167]"
60023 PT$=PT$+"[157][157][157][157][157][157][157][157][157][157][157][157][157][157][208][207][163][163][163][163][163][163][163][163][163][163][208][207][145][145][145][145][157][157][157][157][157][157][157][157][157][157][157][157]"
60024 PT$=BT$+"[145][145][145][145][145][145]"+PT$+"[144]"
60025 PRINTCHR$(142)
60099 PP=50
60100 RETURN
63000 PRINTBT$CL$;:FORTT=1TO50:NEXT
63001 PRINTBT$"RETURN[146] TO CONTINUE";:FORTT=1TO50:NEXT
63002 GETZ$:IFZ$<>""THEN63002
63003 GETZ$:IFZ$=""THEN63003
63004 RETURN
63010 PRINTBT$CL$;:FORTT=1TO50:NEXT
63011 PRINTBT$"[166][166][166][166][166][166][166][166]RETURN TO SEE IT HAPPEN[146][166][166][166][166][166][166][166][166]";:FORTT=1TO50:NEXT
63012 GETZ$:IFZ$<>""THEN63012
63013 GETZ$:IFZ$=""THEN63013
63014 RETURN
63100 FORT=1TO5:PRINTPT$MS$;
63101 PRINTPT$" ";
63102 PRINTPT$MS$;:NEXT
63103 RETURN
63200 GOSUB63000
63201 PRINTSD$;:FORT=1TO15:PRINTCL$:NEXT:PRINTSD$;:RETURN
63300 GOSUB63100:GOSUB63010:RETURN
63400 PRINT"";:FORI=1TO5:PRINTCL$:NEXT:PRINT"";:RETURN
63999 GOSUB60000:PRINT"[147]":GOTO3000